package com.solution;


import java.util.HashSet;
import java.util.Set;

/**
 * 345. 反转字符串中的元音字母
 * 编写一个函数，以字符串作为输入，反转该字符串中的元音字母。
 *
 * 示例 1：
 *
 * 输入："hello"
 * 输出："holle"
 * 示例 2：
 *
 * 输入："leetcode"
 * 输出："leotcede"
 *
 * @author LiYongKui
 * @version 1.0
 * @date 2021/4/7 14:02
 */
public class Solution0345 {

    public static String reverseVowels(String s) {
        char[] chars = s.toCharArray();
        Set<Character> aeiou = new HashSet<>();
        aeiou.add('a');
        aeiou.add('e');
        aeiou.add('i');
        aeiou.add('o');
        aeiou.add('u');
        aeiou.add('A');
        aeiou.add('E');
        aeiou.add('I');
        aeiou.add('O');
        aeiou.add('U');

        int left = 0,right = chars.length - 1;
        while (left < right) {
            while (!aeiou.contains(chars[left]) && left < right){
                left++;
            }
            while (!aeiou.contains(chars[right]) && right > left){
                right--;
            }
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
        }
        return new String(chars);
    }

    public static void main(String[] args) {
        String str = "leetcode";
        System.out.println(reverseVowels(str));
    }
}
